Methods and systems for application program interface call management

ABSTRACT

Disclosed are systems and methods for application program interface (API) call management. For example a method may include obtaining API call information for one or more API endpoints, the API call information including a number of API calls to the one or more API endpoints; obtaining resource utilization (RU) information, the RU information including project RU information for one or more projects; analyzing the API call information and the RU information to obtain API cost information, the API cost information including cost per API call for the one or more API endpoints; and managing subsequent API calls to the one or more API endpoints based on the cost per API call.

TECHNICAL FIELD

Various embodiments of the present disclosure relate generally tomethods and systems for API call management.

BACKGROUND

There may be several registered application program interfaces (APIs)for an entity, such as a company. Accordingly, there is a need todetermine and manage resource utilization for API calls to such APIs.

The present disclosure is directed to overcoming one or more of theseabove-referenced challenges. The background description provided hereinis for the purpose of generally presenting the context of thedisclosure. Unless otherwise indicated herein, the materials describedin this section are not prior art to the claims in this application andare not admitted to be prior art, or suggestions of the prior art, byinclusion in this section.

SUMMARY OF THE DISCLOSURE

According to certain aspects of the disclosure, methods and systems aredisclosed for API call management.

In one aspect, a method is disclosed for application program interface(API) call management. The method may include: obtaining API callinformation for one or more API endpoints, the API call informationincluding a number of API calls to the one or more API endpoints;obtaining resource utilization (RU) information, the RU informationincluding project RU information for one or more projects; analyzing theAPI call information and the RU information to obtain API costinformation, the API cost information including cost per API call forthe one or more API endpoints; and managing subsequent API calls to theone or more API endpoints based on the cost per API call.

In another aspect, there is provided a system for application programinterface (API) call management. The system may include a memory storinginstructions; and one or more processors. The one or more processors maybe configured to execute the instructions to perform a processincluding: obtaining API call information for one or more API endpoints,the API call information including a number of API calls to the one ormore API endpoints; obtaining resource utilization (RU) information, theRU information including project RU information for one or moreprojects; analyzing the API call information and the RU information toobtain API cost information, the API cost information including cost perAPI call for the one or more API endpoints; and managing subsequent APIcalls to the one or more API endpoints based on the cost per API call byperforming an API call request management process, the API call requestmanagement process including: receiving an API call request from aproject, the API call request indicating an API call to an API endpoint;retrieving a cost per API call for the API endpoint; determining whethera budget of the project is sufficient for the cost per API call;declining the API call request when the determining determines thebudget of the project is not sufficient for the cost per API call; andpermitting the API call of the API call request when the determiningdetermines the budget of the project is sufficient for the cost per APIcall.

In another aspect, there is provided a method for application programinterface (API) call management. The method may include: obtaining APIcall information for one or more API endpoints, the API call informationincluding a number of API calls to the one or more API endpoints;obtaining resource utilization (RU) information, the RU informationincluding project RU information for one or more projects; analyzing theAPI call information and the RU information to obtain API costinformation, the API cost information including cost per API call forthe one or more API endpoints, wherein the analyzing the API callinformation and the RU information to obtain the API cost informationincludes: determining a number of API calls to each of the one or moreAPI endpoints; and determining the cost per API call for the one or moreAPI endpoints by: dividing a cost for each of the one or more projectsby the number of API calls to each of the API endpoints corresponding tothe one or more projects for API endpoints corresponding to the one ormore projects, and obtaining pricing rules from service(s) associatedwith the API endpoints not corresponding to the one or more projects forAPI endpoints not corresponding to the one or more projects.

It is to be understood that both the foregoing general description andthe following detailed description are exemplary and explanatory onlyand are not restrictive of the disclosed embodiments, as claimed.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are incorporated in and constitute apart of this specification, illustrate various exemplary embodiments andtogether with the description, serve to explain the principles of thedisclosed embodiments.

FIG. 1 depicts an exemplary system for API call management, according toone or more embodiments.

FIG. 2 depicts a flowchart of an exemplary method of API callmanagement, according to one or more embodiments.

FIG. 3 depicts a flowchart of an exemplary method of API callmanagement, according to one or more embodiments.

FIG. 4 depicts an exemplary display indicating resource utilization foran endpoint for a project, according to one or more embodiments.

FIG. 5 depicts an exemplary computer device or system, in whichembodiments of the present disclosure, or portions thereof, may beimplemented.

DETAILED DESCRIPTION OF EMBODIMENTS

The terminology used below may be interpreted in its broadest reasonablemanner, even though it is being used in conjunction with a detaileddescription of certain specific examples of the present disclosure.Indeed, certain terms may even be emphasized below; however, anyterminology intended to be interpreted in any restricted manner will beovertly and specifically defined as such in this Detailed Descriptionsection. Both the foregoing general description and the followingdetailed description are exemplary and explanatory only and are notrestrictive of the features, as claimed.

In this disclosure, the term “based on” means “based at least in parton.” The singular forms “a,” “an,” and “the” include plural referentsunless the context dictates otherwise. The term “exemplary” is used inthe sense of “example” rather than “ideal.” The terms “comprises,”“comprising,” “includes,” “including,” or other variations thereof, areintended to cover a non-exclusive inclusion such that a process, method,or product that comprises a list of elements does not necessarilyinclude only those elements, but may include other elements notexpressly listed or inherent to such a process, method, article, orapparatus. Relative terms, such as, “substantially” and “generally,” areused to indicate a possible variation of ±10% of a stated or understoodvalue.

One or more APIs may be registered for an entity (e.g., a company) viaexternal servers (e.g., providing and/or supporting external servicessuch as vendor products), internal servers (e.g., providing and/orsupporting internal services such as internal projects), etc. For suchAPIs, internal systems (e.g., a gateway) may determine API usage inaddition to network traffic and resource utilization within the entity.In some embodiments, resource utilization for an API call may bedetermined based on tracked API calls and work load on the resourcesassociated with the tracked API calls. In some embodiments, resourceutilization for the API call may be determined further based on networktraffic.

In some embodiments, a system (e.g., a gateway) may be utilized to querythe number of API calls made to endpoints within an entity, e.g., acompany. In other embodiments, router logs may be utilized to track thenumber of API calls. In some embodiments, API calls may becross-correlated towards resource utilization for projects within theentity. For example, an API for a particular project may have anallocated IP and the IP may be checked against resource utilization foran API call directed to the project.

In some embodiments, the system may divide resource utilization per APIcall. That is, the total resource utilization for a project may bedivided by the total number of API calls directed to the project. Insome embodiments, the cost associated with each project may be rankedbased on API calls per project. API calls to one or more projects may belimited based on budget allocation in view of the cost associated witheach project (also referred to herein as API “throttling”). In thecontext of the current disclosure, resource utilization may be referredto as a metric indicating any resource directed towards a project, suchas, for example, costs incurred and/or compute cycles performed on cloudcomputing platforms, time and resources allocated to the project (e.g.,engineering costs at hourly rates), etc. In some embodiments, networkpackets associated API calls from relatively high priority endpoint maybe prioritized. For example, if the IP of one endpoint is related to ahigh priority task, then the API calls to the IP may be prioritized. Insome embodiments, network packets associated with particular API callsmay be further prioritized based on network traffic.

FIG. 1 depicts an exemplary system 100 for API call management,according to one or more embodiments. The system 100 may include one ormore user device(s) 105, an internal network 110, an internal server115, a gateway 120, an external network 125, and/or an external server130. Hereafter, while the internal server 115, the gateway 120, and/orthe external server 130 may interact with one or a plurality of the oneor more user devices 105, this description will refer to the one or moreuser devices 105 as “the user device 105,” so as to simplify thedescription of the concepts described herein. One of skill in the artwould recognize that the internal server 115, the gateway 120, and/orthe external server 130 may configure the one or more user devices 105so as to experience different functionalities and/or have access todifferent information (e.g., determined by credentials such as userID/password). Additionally, while the functionality carried out by theinternal server 115, the gateway 120, the external server 130, and/orthe user device 105 are discussed herein separately, in practice thesefeatures may be executed on more or fewer devices.

As shown in FIG. 1, the user device 105, the internal server 115, and/orthe gateway 120 may be part of an organization environment 103. In thecontext of the current disclosure, an organization environment mayinclude any networked environment associated with a business and/orenterprise. The user device 105, the internal server 115, and/or thegateway 120 may be connected via the internal network 110, using one ormore standard communication protocols. The internal network 110 may beone or a combination of a wide area network (e.g., the Internet), alocal network, or other network. The user device 105, the internalserver 115, and/or the gateway 120 may transmit and receive messagesfrom each other across the internal network 110. For example, the userdevice 105 may transmit one or more API calls to the internal server115. As shown in FIG. 1, the gateway 120 may provide the user device 105and/or the internal server 115 with connection to the external server130 via an external network 125, using one or more standardcommunication protocols. Accordingly, the user device 105 and/or theinternal server 115 may transmit and receive messages to and from theexternal server 130 via the gateway 120. For example, the user device105 and/or internal server 115 may transmit one or more API calls to theexternal server 130.

The user device 105 may include a display/user interface (UI) 105A, aprocessor 1058, a memory 105C, and/or a network interface 105D. The userdevice 105 may be a computer, a cell phone, a tablet, etc. The userdevice 105 may execute, by the processor 105B, an operating system (O/S)and at least one application (each stored in memory 105C). Theapplication may be a browser program or a mobile application program(which may also be a browser program in a mobile O/S). The applicationmay generate one or more graphic user interfaces (GUIs) based oninstructions/information stored in the memory 105C,instructions/information received from the internal server 115, and/orinstructions/information received from the external server 130. Forinstance, the GUIs might be application GUIs for the applicationexecuted based on XML and Android programming languages orObjective-C/Swift, but one skilled in the art would recognize that thismay be accomplished by other methods, such as webpages executed based onHTML, CSS, and/or scripts, such as JavaScript. The display/UI 105A maybe a touch screen or a display with other input systems (e.g., mouse,keyboard, etc.). The network interface 105D may be a TCP/IP networkinterface for, e.g., Ethernet or wireless communications with theinternal network 110. The processor 1058, while executing theapplication, may receive user inputs from the display/UI 105A, andperform actions or functions in accordance with the application.

The internal server(s) 115 may include a display/UI 115A, a processor1158, a memory 115C, and/or a network interface 115D. The server 115 maybe a computer, system of computers (e.g., rack server(s)), and/or or acloud service computer system. The internal server 115 may execute, bythe processor 1158, an operating system (O/S) and at least one instanceof an internal server program (each stored in memory 115C). The server115 may store or have access to server information (e.g., hosted on athird-party server). The display/UI 115A may be a touch screen or adisplay with other input systems (e.g., mouse, keyboard, etc.) for anoperator of the internal server 115 to control the functions of theinternal server 115 (e.g., update the internal server program and/or theinternal server information). The network interface 115D may be a TCP/IPnetwork interface for, e.g., Ethernet or wireless communications withthe internal network 110.

The server program, executed by the processor 115B on the server 115,may be configured to perform a method for API call management. Themethod may include: obtaining API call information for one or more APIendpoints, the API call information including a number of API calls tothe one or more API endpoints; obtaining resource utilization (RU)information, the RU information including project RU information for oneor more projects; analyzing the API call information and the RUinformation to obtain API cost information, the API cost informationincluding cost per API call for the one or more API endpoints; andmanaging subsequent API calls to the one or more API endpoints based onthe cost per API call. Further details of the server program arediscussed below.

The gateway 120 may include a display/UI 120A, a processor 120B, amemory 120C, and/or a network interface 120D. In some embodiments, thegateway 120 may be configured to direct and/or throttle network packetsassociated with API calls transmitted by the user device 105, theinternal server 115 and/or the external server 130, as will be describedin further detail below. The gateway 120 may be a computer, system ofcomputers (e.g., rack server(s)), and/or or a cloud service computersystem. The gateway 120 may execute, by the processor 120B, an operatingsystem (O/S) and at least one instance of a gateway program (each storedin memory 120C). The gateway 120 may store or have access to gatewayinformation (e.g., hosted on a third-party server). The display/UI 120Amay be a touch screen or a display with other input systems (e.g.,mouse, keyboard, etc.) for an operator of the gateway 120 to control thefunctions of the gateway 120 (e.g., update the gateway program and/orthe gateway information). The network interface 120D may be a TCP/IPnetwork interface for, e.g., Ethernet or wireless communications withthe internal network 110 and/or the external network 125.

The external server 130 may include a display/UI 130A, a processor 130B,a memory 130C, and/or a network interface 130D. In some embodiments, theexternal server 130 may be a virtual computing platform. The externalserver 130 may be a computer, system of computers (e.g., rackserver(s)), and/or or a cloud service computer system. The externalserver 130 may execute, by the processor 130B, an operating system (O/S)and at least one instance of an external server program (each stored inmemory 130C). The external server 130 may store or have access to serverinformation (e.g., hosted on a third-party server). The display/UI 130Amay be a touch screen or a display with other input systems (e.g.,mouse, keyboard, etc.) for an operator of the external server 130 tocontrol the functions of the external server 130 (e.g., update theexternal server program and/or the external server information). Thenetwork interface 130D may be a TCP/IP network interface for, e.g.,Ethernet or wireless communications with the internal network 110 and/orthe external network 125. The external server 130 may provide externalservices such as cloud computing services. For example, the externalserver 130 may provide cloud computing platforms and APIs to user device105 to utilize such cloud computing services. The cloud computingservices may be provided on a metered pay-as-you-go format or a fixedrate format that provides unlimited access for a fixed rate.

FIG. 2 depicts a flowchart of an exemplary process 200 for API callmanagement according to one or more embodiments, and may be performed inthe exemplary environment of FIG. 1. Process 200 may be performed bygateway 120 as described above with reference to FIG. 1. It isunderstood, however, that process 200 may be performed by anycombination of the components depicted in and described with referenceto FIG. 1 (e.g., user device 105, internal server 115, and/or externalserver 130) in other embodiments.

Process 200 may, in some embodiments, begin with step 205, in which APIcall information for one or more API endpoints may be obtained bygateway 120. In some embodiments, obtaining the API call information forthe one or more API endpoints may include analyzing API call requests todetermine requesting projects and API endpoints for the API callrequests and updating a data structure to include the requestingprojects in association with the API endpoints. In some embodiments, APIcalls may each have one or more associated tags (also referred to aslabels). In such embodiments, the API call information may be obtainedbased on such tags. In some embodiments, API call information may beobtained based on proxy logs. In some embodiments, API calls may passthrough a dedicated API layer (e.g., a dedicated API interface for allAPI calls). In such embodiments, the API call information may beobtained based on API calls passing though the dedicated API layer.

In step 210, resource utilization (RU) information may be obtained bygateway 120. In some embodiments, obtaining the RU information mayinclude: automatically transmitting a request to a cloud service (e.g.,external server 130) for budget, cost, computes, and/or storage forprojects of the one or more projects; receiving a response from thecloud service (e.g., external server 130), the response including thebudget, cost, computes, and/or storage for the projects of the one ormore projects; and processing the budget, cost, computes, and/or storagefor the projects of the one or more projects into an amount of resourceunits. In some embodiments, obtaining the RU information may furtherinclude: obtaining (e.g., from internal server 115) physical costinformation for a physical infrastructure associated with the projectsof the one or more projects; obtaining (e.g., from internal server 115)human resource cost information for human resources associated with theprojects of the one or more projects; processing the physical costinformation and the human resource cost information for the projects ofthe one or more projects into a second amount of resource units; andcombining the amount of resource units and the second amount of resourceunits for the projects of the one or more projects to obtain a cost foreach of the projects of the one or more projects. In some embodiments,RU information may be obtained based on tags (also referred to aslabels) for resources associated with the one or more projects. Forexample, RU information may be determined by retrieving RU informationbased on such tags for the one or more projects.

In step 215, the API call information and the RU information may beanalyzed by gateway 120 to obtain API cost information. In someembodiments, the API cost information may include cost per API call forthe one or more API endpoints. In some embodiments, analyzing the APIcall requests may be performed by a function executing on gateway 120and/or analyzing router logs of the gateway. The function trackingincoming API call requests as the incoming API call requests may beprocessed by gateway 120.

In some embodiments, analyzing the API call information and the RUinformation to obtain the API cost information may include: retrievingdata from the data structure; processing the data to determine a numberof API calls to each of the one or more API endpoints; and determiningthe cost per API call for the one or more API endpoints by: dividing thecost for each of the one or more projects by the number of API calls toeach of the API endpoints corresponding to the one or more projects forAPI endpoints corresponding to the one or more projects, and obtainingpricing rules from service(s) associated with the API endpoints notcorresponding to the one or more projects for API endpoints notcorresponding to the one or more projects.

In step 220, subsequent API calls to the one or more API endpoints maybe managed by gateway 120 based on the cost per API call. In someembodiments, managing the subsequent API calls to the one or more APIendpoints may include: receiving an API call request from a project, theAPI call request indicating an API call to an API endpoint; retrieving acost per API call for the API endpoint; determining whether a budget ofthe project is sufficient for the cost per API call; and declining theAPI call request when the determining determines the budget of theproject is not sufficient for the cost per API call. In someembodiments, determining whether the budget of the project is sufficientfor the cost per API call may include determining whether a profit perAPI call exceeds a cost per API call. In the context of the currentdisclosure, a profit per API call may be referred to as value added perAPI call. In the context of the current disclosure, a cost per API callmay be referred to as resource utilization (RU) per API call.Accordingly, it may be desirable to lower the RU per API call in someinstances.

In some embodiments, managing the subsequent API calls to the one ormore API endpoints may further include: determining whether the API callrequest includes a priority request when the determining determines thebudget of the project is sufficient for the cost per API call; andperforming a priority process when the determining determines the APIcall request includes the priority request. In some embodiments, thepriority process may include parsing the API call request to extract abid; obtaining other bids for other API call requests; comparing the bidand the other bids to sort the bid and other bids in an ordered list;and permitting the API calls associated with the API call request andother API call requests in order of the ordered list.

In some embodiments, managing the subsequent API calls to the one ormore API endpoints may further include: determining whether the API callrequest includes a conditional request when the determining determinesthe API call request does not include the priority request; and holdingthe API call request until a condition of the conditional request is metwhen the determining determines the API call request includes theconditional request.

FIG. 3 depicts a flowchart of an exemplary process 300 of API callmanagement according to one or more embodiments, and may be performed inthe exemplary environment of FIG. 1. Process 300 may be performed bygateway 120 as described above with reference to FIG. 1. It isunderstood, however, that process 300 may be performed by anycombination of the components depicted in and described with referenceto FIG. 1 (e.g., user device 105, internal server 115, and/or externalserver 130) in other embodiments.

Process 300 may, in some embodiments, begin with step 305, in whichgateway 120 may determine whether an API call request has been received.In the context of the current disclosure, an API call request mayinclude one or more API calls to an API endpoint. For example, an APIcall request may be to open a word processor document. In suchinstances, the API call request may include an API call to access a wordprocessor and a subsequent API call to open the word processor documentusing the word processor. Hereafter, while the API call request mayinclude one or more API calls, this description will refer to the one ormore API calls included in the API call request as the API call includedin the API call request. Based on a determination that an API callrequest has not been received, the process may return to step 305 inwhich gateway 120 may wait for an API call request. Based on adetermination that an API call request has been received, the process300 moves on to step 310. In step 310, cost information associated withthe API call request may be obtained by gateway 120. In someembodiments, obtaining the cost information associated with the API callmay include obtaining (e.g., from internal server 115) physical costinformation for a physical infrastructure associated with the project towhich the API call request is directed to and/or obtaining humanresource cost information for human resources associated with theproject. In step 315, gateway 120 may determine whether the obtainedcost associated with the API call request falls within a predeterminedbudget for the project. If the obtained cost associated with the APIcall request does not fall within the predetermined budget for theproject (step 315: No), the process 300 moves to step 320 at which theAPI call request is declined by gateway 120. Following declining the APIcall request, the process may return to step 305 in which gateway 120may wait for an API request. If the obtained cost associated with theAPI call request does fall within the predetermined budget for theproject (step 315: Yes), the process 300 may advance to step 325 inwhich gateway 120 may determine whether the API call request is apriority request. In some embodiments, a priority request may refer toan API call request associated with a project that has relatively higherpriority compared to other projects. For example, a project may bedesignated as a priority project during planning and execution phases ofthe project. In such instances, any API call requests associated withthe priority project may be determined to be a priority request and takeprecedence over API call requests associated with projects that have notbeen designated as priority projects. In some embodiments, the API callrequest may include information indicating whether or not the API callrequest is a priority request.

If the API call request is a priority request, the process 300 moves onto step 345 in which other bids for other priority API call requests areobtained by gateway 120. In the context of the current disclosure, bidsmay comprise resource utilization associated with each of the API callrequests. In some embodiments, gateway 120 may parse each receivedpriority API call request to obtain each associated bid. For example,gateway 120 may identify and extract information included in eachreceived priority API call request that indicates the associated bid.Accordingly, gateway 120 may determine the bid for each priority APIcall request based on the parsed (e.g., identified and extracted)information. In step 360, the bids for each of the priority API callrequests are compared by gateway 120. In some embodiments, comparing thebids may include comparing the resource utilization associated with eachof the priority API call requests. For example, a priority API callrequest may include an API call to a cloud computing platform with anunlimited access subscription where another priority API call requestmay include an API call to a cloud computing platform with a cost peraccess subscription. In such instances, the priority API call requestassociated with the unlimited access subscription may have the higherresource utilization (also referred to as having the higher bid). Instep 365, the priority API call requests may be permitted by gateway 120in accordance to the comparison performed in step 360. For example, thepriority API call request associated with the unlimited accesssubscription (with reference to the example above) may be permittedprior to the priority API call request associated with the cost peraccess subscription. In some embodiments, the process 300 may furtherinclude a step in which the priority API call requests are ranked bygateway 120 in the order of associated costs, e.g., resourceutilization. In such embodiments, the API call requests may be permittedin the ranked order in step 365. In step 370, the budget of the projectassociated with each of the priority API call requests may be updated bygateway 120 based on the resources utilized by each respective API call.

Referring back to step 325, it may be determined by gateway 120 that theAPI call request is not a priority request (step 325: No). In suchinstances, process 300 may proceed to step 330, in which it isdetermined whether the API call request is a conditional request. Thatis, it is determined whether the API call request includes a conditionthat must be met in order for the API call request to be permitted. Forexample, the API call request may include an API call to a cloudcomputing platform with a cost per access subscription. In suchinstances, a condition included in the API call request may be to holdthe API call until the cost for access to the cloud computing platformfalls below a certain amount. In some embodiments, the API call requestmay include information indicating such conditions. In step 335, the APIcall request may be held by gateway 120 until the condition is met. Forexample, the API call request may be held until the cost for access tothe cloud computing platform falls below a certain amount. In someembodiments, gateway 120 may request and receive information fromexternal server 130 regarding the cost to access the cloud computingplatform. In such embodiments, gateway 120 may determine that thecondition has been met based on information received from externalserver 130. Once the condition is met, the API call request may bepermitted in step 355. In step 370, the budget of the project associatedwith the API call request may be updated by gateway 120 based on theresources utilized by the API call.

Referring back to step 330, it may be determined that the API callrequest is not a conditional request (step 330: No). The process 300 maythen proceed to step 350, in which the API call request may be permittedafter other priority API call requests are permitted. In step 370, thebudget of the project associated with each of the priority API callrequests and the API call request may be updated based on the resourcesutilized by each respective API call.

In some embodiments, one or more graphs and/or charts may be generatedbased on processing of the API call requests as disclosed herein. Forexample, the one or more graphs and/or charts may depict resourceutilization of various API call requests for one or more projects asdescribed above with reference to FIGS. 1, 2, and 3. The one or moregraphs and/or charts may displayed to a user via one or more of thedisplays/UIs 105A, 115A, 120A, 130A described above with reference toFIG. 1.

FIG. 4 depicts a display 400 indicating resource utilization for anendpoint 405 for a project, according to one or more embodiments. Insome embodiments, the endpoint 405 may be the point of interaction withone or more customers for a project associated with the endpoint 405. Insuch embodiments, each time a customer interacts with the endpoint 405,the project may be gaining resources as opposed to consuming existingresources, for example, allocated budget for the project. Accordingly,the display 400 may include an element indicating the endpoint 405 andtext 420A indicating that the project is gaining 3 resource utilization(RU) units per hour. In some embodiments, the display 400 may furtherinclude an element indicating the progression of the RU per hour at theendpoint 405. For example, the display 400 may include an upward arrow425A indicating that the RU per hour is increasing and text 430Aindicating that the RU per hour is increasing by 1 percent.

The endpoint 405 may generate one or more API call requests inaccordance to customer interactions. For example, the endpoint 405 maygenerate API call requests 410, and the API call requests 410 mayconsume existing resources to accommodate customer interactions. Thedisplay 400 may include an element indicating the API call requests 410and text 420B indicating that the project is consuming 2 RU per hour dueto the API call request 410. In some embodiments, the display 400 mayfurther include an element indicating the progression of the RU per hourfor the API call requests 410. For example, the display 400 may includea downward arrow 425B indicating that the RU per hour is decreasing,thereby gradually consuming less RU, and text 430B indicating that theRU per hour is decreasing by 1 percent.

The API call requests 410 may include one or more API calls directed toa first resource 415A and one or more API calls directed to a secondresource 415B. Each resource may consume existing resources and thedisplay 400 may include an element indicating the first resource 415Aand text 420C indicating that the project is consuming 0.5 RU per hourdue to API calls directed to the first resource 415A, and an elementindicating the second resource 4158 and text 420D indicating that theproject is consuming 1.5 RU per hour due to API calls directed to thesecond resource 4158. In some embodiments, the display 400 may furtherinclude an element indicating the progression of the RU per hour for thefirst and second resources 415A-415B. For example, the display 400 mayinclude an upward arrow 425C indicating that the RU per hour isincreasing for the first resource 415A, thereby gradually consuming moreRU, and text 430C indicating that the RU per hour is increasing by 2percent. The display 400 may include downward arrow 425D indicating thatthe RU per hour is decreasing for the second resource 4158, therebygradually consuming less RU, and text 430D indicating that the RU perhour is decreasing by 3 percent.

In some embodiments, API calls for a project may be reconfigured tooptimize resource utilization for the project. For example, API callsdirected to the first resource 415A may be redirected to the secondresource 4158 based on the gradual decrease of RU per hour for thesecond resource 415B, as shown in and described with reference to FIG.4.

As shown in FIG. 5, a device 500 used for performing the variousembodiments of the present disclosure (e.g., user device 105, internalserver 115, gateway 120, external server 130, and/or any other computersystem or user terminal for performing the various embodiments of thepresent disclosure) may include a central processing unit (CPU) 520. CPU520 may be any type of processor device including, for example, any typeof special purpose or a general-purpose microprocessor device. As willbe appreciated by persons skilled in the relevant art, CPU 520 also maybe a single processor in a multi-core/multiprocessor system, such systemoperating alone, or in a cluster of computing devices operating in acluster or server farm. CPU 520 may be connected to a data communicationinfrastructure 510, for example, a bus, message queue, network, ormulti-core message-passing scheme.

A device 500 (e.g., user device 105, internal server 115, gateway 120,external server 130, and/or any other computer system or user terminalfor performing the various embodiments of the present disclosure) mayalso include a main memory 540, for example, random access memory (RAM),and may also include a secondary memory 530. Secondary memory, e.g., aread-only memory (ROM), may be, for example, a hard disk drive or aremovable storage drive. Such a removable storage drive may comprise,for example, a floppy disk drive, a magnetic tape drive, an optical diskdrive, a flash memory, or the like. The removable storage drive in thisexample reads from and/or writes to a removable storage unit in awell-known manner. The removable storage unit may comprise a floppydisk, magnetic tape, optical disk, etc., which is read by and written toby the removable storage drive. As will be appreciated by personsskilled in the relevant art, such a removable storage unit generallyincludes a computer usable storage medium having stored therein computersoftware and/or data.

In alternative implementations, secondary memory 530 may include othersimilar means for allowing computer programs or other instructions to beloaded into device 500. Examples of such means may include a programcartridge and cartridge interface (such as that found in video gamedevices), a removable memory chip (such as an EPROM, or PROM) andassociated socket, and other removable storage units and interfaces,which allow software and data to be transferred from a removable storageunit to device 500.

A device 500 may also include a communications interface (“COM”) 560.Communications interface 560 allows software and data to be transferredbetween device 500 and external devices. Communications interface 560may include a modem, a network interface (such as an Ethernet card), acommunications port, a PCMCIA slot and card, or the like. Software anddata transferred via communications interface may be in the form ofsignals, which may be electronic, electromagnetic, optical, or othersignals capable of being received by communications interface 560. Thesesignals may be provided to communications interface 560 via acommunications path of device 500, which may be implemented using, forexample, wire or cable, fiber optics, a phone line, a cellular phonelink, an RF link or other communications channels.

The hardware elements, operating systems, and programming languages ofsuch equipment are conventional in nature, and it is presumed that thoseskilled in the art are adequately familiar therewith. A device 500 alsomay include input and output ports 550 to connect with input and outputdevices such as keyboards, mice, touchscreens, monitors, displays, etc.Of course, the various server functions may be implemented in adistributed fashion on a number of similar platforms, to distribute theprocessing load. Alternatively, the servers may be implemented byappropriate programming of one computer hardware platform.

The systems, apparatuses, devices, and methods disclosed herein aredescribed in detail by way of examples and with reference to thefigures. The examples discussed herein are examples only and areprovided to assist in the explanation of the apparatuses, devices,systems, and methods described herein. None of the features orcomponents shown in the drawings or discussed below should be taken asmandatory for any specific implementation of any of these theapparatuses, devices, systems, or methods unless specifically designatedas mandatory. For ease of reading and clarity, certain components,modules, or methods may be described solely in connection with aspecific figure. In this disclosure, any identification of specifictechniques, arrangements, etc. are either related to a specific examplepresented or are merely a general description of such a technique,arrangement, etc. Identifications of specific details or examples arenot intended to be, and should not be, construed as mandatory orlimiting unless specifically designated as such. Any failure tospecifically describe a combination or sub-combination of componentsshould not be understood as an indication that any combination orsub-combination is not possible. It will be appreciated thatmodifications to disclosed and described examples, arrangements,configurations, components, elements, apparatuses, devices, systems,methods, etc. can be made and may be desired for a specific application.Also, for any methods described, regardless of whether the method isdescribed in conjunction with a flow diagram, it should be understoodthat unless otherwise specified or required by context, any explicit orimplicit ordering of steps performed in the execution of a method doesnot imply that those steps must be performed in the order presented butinstead may be performed in a different order (e.g., steps may be added,removed, or repeated), or in parallel.

Throughout this disclosure, references to components or modulesgenerally refer to items that logically can be grouped together toperform a function or group of related functions. Like referencenumerals are generally intended to refer to the same or similarcomponents. Components and modules can be implemented in software,hardware, or a combination of software and hardware. The term “software”is used expansively to include not only executable code, for examplemachine-executable or machine-interpretable instructions, but also datastructures, data stores and computing instructions stored in anysuitable electronic format, including firmware, and embedded software.The terms “information” and “data” are used expansively and includes awide variety of electronic information, including executable code;content such as text, video data, and audio data, among others; andvarious codes or flags. The terms “information,” “data,” and “content”are sometimes used interchangeably when permitted by context.

It is intended that the specification and examples be considered asexemplary only, with a true scope and spirit of the disclosure beingindicated by the following claims.

1.-20. (canceled)
 21. A method for application program interface (API)call management, comprising: obtaining API call information for one ormore API endpoints, wherein the API call information includes a numberof API calls to the one or more API endpoints; obtaining projectresource utilization (RU) information for one or more projects;determining a number of API calls to each of the one or more APIendpoints; determining a cost per API call for each of the one or moreAPI endpoints corresponding to the one or more projects by dividing acost for each of the one or more projects by the number of API calls toeach of the API endpoints corresponding to the one or more projects;receiving an API call request from a first project of the one or moreprojects, the API call request indicating an API call to an APIendpoint; retrieving a cost per API call for the API endpoint;determining whether a budget of the first project is sufficient for thecost per API call; and upon determining the budget of the first projectis sufficient for the cost per API call, permitting the API call of theAPI call request; or upon determining the budget of the first project isnot sufficient for the cost per API call, declining the API call of theAPI call request.
 22. The method of claim 21, further comprising:determining a cost per API call for each of the one or more APIendpoints not corresponding to the one or more projects by obtainingpricing rules from service(s) associated with the API endpoints notcorresponding to the one or more projects.
 23. The method of claim 21,wherein the obtaining the API call information for the one or more APIendpoints includes: analyzing API call requests to determine requestingprojects and API endpoints for the API call requests; and updating adata structure to include the requesting projects in association withthe API endpoints.
 24. The method of claim 23, the API call informationfor the one or more API endpoints is obtained based on: a functionexecuting on a gateway, the function tracking incoming API call requestsas the incoming API call requests are processed by the gateway; oranalyzing router logs of the gateway.
 25. The method of claim 21,wherein the project RU information includes one or more of data storageusage information, network data usage information, or cost information.26. The method of claim 25, wherein obtaining project resourceutilization (RU) information for one or more projects includes:automatically transmitting a request to a cloud service for budget,cost, computes, and/or storage for projects of the one or more projects;receiving a response from the cloud service, the response including thebudget, cost, computes, and/or storage for the projects of the one ormore projects; and processing the budget, cost, computes, and/or storagefor the projects of the one or more projects into an amount of resourceunits.
 27. The method of claim 26, wherein the obtaining the RUinformation further includes: obtaining physical cost information for aphysical infrastructure associated with the projects of the one or moreprojects; obtaining human resource cost information for human resourcesassociated with the projects of the one or more projects; processing thephysical cost information and the human resource cost information forthe projects of the one or more projects into a second amount ofresource units; and combining the amount of resource units and thesecond amount of resource units for the projects of the one or moreprojects to obtain a cost for each of the projects of the one or moreprojects.
 28. The method of claim 21, further comprising: upondetermining the budget of the first project is sufficient for the costper API call, determining whether the API call request includes apriority request; and upon determining the API call request includes apriority request, performing a priority process.
 29. The method of claim21, further comprising: upon determining the budget of the first projectis sufficient for the cost per API call, determining whether the APIcall request includes a priority request; upon determining the API callrequest does not include a priority request, determining whether the APIcall request includes a conditional request; and upon determining theAPI call request includes the conditional request, holding the API callrequest until a condition of the conditional request is met.
 30. Themethod of claim 28, wherein the priority process includes: parsing theAPI call request to extract a bid; obtaining other bids for other APIcall requests; comparing the bid and the other bids to sort the bid andother bids in an ordered list; and permitting the API calls associatedwith the API call request and other API call requests in order of theordered list.
 31. The method of claim 27, wherein determining a numberof API calls to each of the one or more API endpoints includes:retrieving data from a data structure; and processing the data todetermine the number of API calls to each of the one or more APIendpoints.
 32. A method for application program interface (API) callmanagement, comprising: obtaining API call information for one or moreAPI endpoints, wherein the API call information includes a number of APIcalls to the one or more API endpoints; obtaining project resourceutilization (RU) information for one or more projects; determining acost per API call for each of the one or more API endpointscorresponding to the one or more projects by dividing a cost for each ofthe one or more projects by the number of API calls to each of the APIendpoints corresponding to the one or more projects; receiving an APIcall request from a first project of the one or more projects, the APIcall request indicating an API call to an API endpoint; retrieving acost per API call for the API endpoint; determining whether a budget ofthe first project is sufficient for the cost per API call; and upondetermining the budget of the first project is not sufficient for thecost per API call, declining the API call of the API call request; orupon determining the budget of the first project is sufficient for thecost per API call: permitting the API call of the API call request;determining whether the API call request includes a priority request;and upon determining the API call request includes a priority request,performing a priority process; or upon determining the API call requestdoes not include a priority request, determining whether the API callrequest includes a conditional quest.
 33. The method of claim 32,further comprising: determining a cost per API call for each of the oneor more API endpoints not corresponding to the one or more projects byobtaining pricing rules from service(s) associated with the APIendpoints not corresponding to the one or more projects.
 34. The methodof claim 32, wherein the obtaining the API call information for the oneor more API endpoints includes: analyzing API call requests to determinerequesting projects and API endpoints for the API call requests; andupdating a data structure to include the requesting projects inassociation with the API endpoints.
 35. The method of claim 32, whereinthe project RU information includes one or more of data storage usageinformation, network data usage information, or cost information. 36.The method of claim 35, wherein obtaining project resource utilization(RU) information for one or more projects includes: automaticallytransmitting a request to a cloud service for budget, cost, computes,and/or storage for projects of the one or more projects; receiving aresponse from the cloud service, the response including the budget,cost, computes, and/or storage for the projects of the one or moreprojects; and processing the budget, cost, computes, and/or storage forthe projects of the one or more projects into an amount of resourceunits.
 37. The method of claim 36, wherein the obtaining the RUinformation further includes: obtaining physical cost information for aphysical infrastructure associated with the projects of the one or moreprojects; obtaining human resource cost information for human resourcesassociated with the projects of the one or more projects; processing thephysical cost information and the human resource cost information forthe projects of the one or more projects into a second amount ofresource units; and combining the amount of resource units and thesecond amount of resource units for the projects of the one or moreprojects to obtain a cost for each of the projects of the one or moreprojects, wherein determining a number of API calls to each of the oneor more API endpoints includes: retrieving data from a data structure;and processing the data to determine the number of API calls to each ofthe one or more API endpoints.
 38. The method of claim 32, wherein thepriority process includes: parsing the API call request to extract abid; obtaining other bids for other API call requests; comparing the bidand the other bids to sort the bid and other bids in an ordered list;and permitting the API calls associated with the API call request andother API call requests in order of the ordered list.
 39. The method ofclaim 32, further comprising: upon determining the API call requestincludes the conditional request, holding the API call request until acondition of the conditional request is met.
 40. A system forapplication program interface (API) call management, the systemcomprising: a memory storing instructions; and a processor executing theinstructions to perform a process including: obtaining API callinformation for one or more API endpoints; obtaining project resourceutilization (RU) information for one or more projects; determining anumber of API calls to each of the one or more API endpoints;determining a cost per API call for each of the one or more APIendpoints corresponding to the one or more projects by dividing a costfor each of the one or more projects by the number of API calls to eachof the API endpoints corresponding to the one or more projects;receiving an API call request from a first project of the one or moreprojects, the API call request indicating an API call to an APIendpoint; retrieving a cost per API call for the API endpoint;determining whether a budget of the first project is sufficient for thecost per API call; and upon determining the budget of the first projectis sufficient for the cost per API call, permitting the API call of theAPI call request.